package com.micro.modual.controller;

import com.micro.core.resp.RespJson;
import com.micro.core.resp.RespJsonData;
import com.micro.core.resp.RespJsonPageData;
import com.micro.modual.model.bo.region.RegionBO;
import com.micro.modual.model.dto.region.RegionDetailDTO;
import com.micro.modual.model.dto.region.RegionListDTO;
import com.micro.modual.service.RegionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.*;

import java.util.Map;

/**
 * <h1>行政区划 控制器</h1>
 * @author levelcoder
 * @version V1.0.0
 * @email LevelCoder@126.com
 * @date 2020-08-04 00:27:47
 */
@Api(value = "行政区域管理",tags = "行政区域管理")
@RestController
@RequestMapping(value = "region")
public class RegionController {

    @Autowired
    private RegionService regionService;

    /**
     * <h2>查找行政区划 列表</h2>
     * @param params 列表查询请求对象
     * @return List<RegionListDTO> {@link RegionListDTO}s  行政区划 列表返回对象
     */
    @ApiOperation(value = "查询行政区划列表" ,notes = "查询行政区划列表")
    @GetMapping(value = "/findRegionList")
    public RespJsonPageData<RegionListDTO> findRegionList(@RequestParam  Map<String,Object> params){
        return regionService.findList(params,RegionListDTO.class);
    }

    /**
     * <h2>根据主键编号查看行政区划详情</h2>
     * @param id  行政区划 主键编号
     * @return {@link RegionDetailDTO}  行政区划 详情
     */
    @ApiOperation(value = "查询行政区划详情",notes = "根据主键编号，查询行政区划详情")
    @GetMapping(value = "/findRegionDetail/{id}")
    public RespJsonData<RegionDetailDTO> findRegionDetail(@PathVariable("id") Long id){
        return regionService.findDetail(id,RegionDetailDTO.class);
    }

    /**
     * <h2>新增行政区划详情</h2>
     * @param regionBO {@link RegionBO} 行政区划 新增/修改 请求对象
     * @return {@link RespJson} 返回结果基础类
     */
    @ApiOperation(value = "新增行政区划",notes = "新增行政区划")
    @PostMapping(value = "/addRegion")
    public RespJson addRegion(@RequestBody RegionBO regionBO){
        return regionService.addRegion(regionBO);
    }

    /**
     * <h2>修改行政区划详情</h2>
     * @param regionBO  {@link RegionBO} 行政区划 新增/修改 请求对象
     * @return {@link RespJson} 返回结果基础类
     */
    @ApiOperation(value = "修改行政区划",notes = "修改行政区划")
    @PostMapping(value = "/editRegion")
    public RespJson editRegion(@RequestBody RegionBO regionBO){
        return regionService.editRegion(regionBO);
    }

    /**
     * <h2>根据主键编号删除行政区划信息</h2>
     * @param id  行政区划 主键编号
     * @return  {@link RespJson} 返回结果基础类
     */
    @ApiOperation(value = "删除行政区划",notes = "根据地址ID，删除行政区划")
    @PostMapping(value = "/deleteRegion/{id}")
    public RespJson deleteRegion(@PathVariable("id") Long id){
        return regionService.deleteRegion(id);
    }
}

